NPU Operator
特性介绍
Kubernetes通过设备插件提供对特殊硬件资源(如昇腾NPU)的访问。但是配置和管理具有这些硬件资源的节点需要配置多个软件组件(如驱动程序、容器运行时或其他库),这些组件安装复杂困难且容易出错。NPU Operator使用Kubernetes中的Operator Framework来自动管理配置昇腾设备所需的所有软件组件。这些组件包括昇腾驱动程序和固件,使能构建集群全流程运行,支持集群作业调度、运维监控、故障恢复等功能的MindCluster设备插件。通过安装相应的组件,可以实现NPU资源管理、工作负载的优化调度、训推任务的容器化支持,使能AI作业以容器形式部署并运行在NPU设备上。
表 1 当前支持安装的组件
组件名称 | 部署方式 | 组件功能 |
---|---|---|
昇腾驱动和固件 | NPU Operator管理下的容器化部署 | 作为硬件设备和操作系统之间的桥梁,用来让操作系统识别并与硬件设备进行通信。 |
Ascend Device Plugin | NPU Operator管理下的容器化部署 | 设备发现:基于Kubernetes设备插件机制,增加昇腾AI处理器的设备发现、设备分配、设备健康状态上报功能,使Kubernetes可以管理昇腾AI处理器资源。 |
Ascend Operator | NPU Operator管理下的容器化部署 | 环境配置:Volcano协助组件,负责管理类Volcano资源acjob (Volcano为vcjob),将AI框架(MindSpore/PyTorch/TensorFlow)训练任务所需环境变量注入容器,Volcano再接手调度。 |
Ascend Docker Runtime | NPU Operator管理下的容器化部署 | 昇腾容器运行时:容器引擎插件,为所有AI作业提供NPU容器化支持,使用户进行AI作业时能够以Docker容器的方式平滑地在昇腾设备上运行。 |
NPU Exporter | NPU Operator管理下的容器化部署 | 昇腾AI处理器资源数据的实时监测:该功能支持实时采集昇腾AI处理器的各项资源数据,包括处理器利用率、温度、电压、内存使用情况。此外,还能够监测Atlas推理系列产品的虚拟NPU(vNPU),包括AI Core的利用率、vNPU的总内存以及已使用内存等关键指标。 |
Resilience Controller | NPU Operator管理下的容器化部署 | 动态扩缩容:当任务训练过程中发生故障,并且没有充足的健康资源进行替换,该组件可使用动态缩容的方式,剔除故障资源并继续训练,等资源充足后通过动态扩容方式进行训练任务的恢复。 |
ClusterD | NPU Operator管理下的容器化部署 | 收集集群任务信息、资源信息和故障信息,统一判定故障处理等级与策略,控制训练容器的进程重计算。 |
Volcano | NPU Operator管理下的容器化部署 | 从底层组件获取集群资源信息,通过感知昇腾芯片之间的网络连接方式,选择最佳调度策略和最优资源分配,当任务资源故障时,可进行任务重调度。 |
NodeD | NPU Operator管理下的容器化部署 | 检测节点资源监控状态和节点故障信息,将故障信息上报并防止新任务调度到故障节点上。 |
MindIO | NPU Operator管理下的容器化部署 | 针对模型训练中断后的临终CheckPoint生成与保存,在线修复模型训练过程中片上内存的UCE故障,提供重启或替换节点完成故障修复和模型续训的能力,优化CheckPoint的保存和加载。 |
关于组件的详细信息请参考MindCluster介绍。
应用场景
构建基于昇腾设备的集群,支持集群作业调度、运维监控、故障恢复的功能场景,NPU Operator可以自动识别集群中的昇腾节点进行相应的安装部署工作。对于训练场景,支持NPU资源检测、整卡调度、静态vNPU调度、断点续训以及弹性训练等功能。而对于推理场景,支持资源检测、整卡调度、静态vNPU调度、动态vNPU调度、推理卡故障恢复和重调度功能。
能力范围
- 自动发现昇腾NPU设备节点,对节点进行标记。
- 自动部署昇腾NPU的驱动固件。
- 集群调度组件的MindCluster自动化部署安装和生命周期管理。
亮点特征
NPU Operator能够自动识别集群中昇腾节点以及设备型号,安装对应版本的AI运行必要组件,极大简化了配置昇腾生态组件的使用门槛。对于所安装的组件进行全生命周期管理和自动化配置部署,NPU Operator可检测组件安装状态,并提供详细日志进行调试。
实现原理
- Operator通过监控CRD实例化的CR变化实现对管理组件状态的修改。
- Operator通过NFD在节点上标记的标签,利用npu-feature-discovery组件给节点标记上符合昇腾组件调度的节点标签。
与相关特性的关系
请确保application-management-service和marketplace-service正常运行,以保证该特性能够从应用市场正常安装。
Operator的安全上下文
一些NPU Operator管理的Pod(例如驱动程序容器)需要提升的权限如下。
privileged: true
hostPID: true
hostIPC: true
hostNetwork: true
提升权限的原因如下:
- 访问主机文件系统和硬件设备,在宿主机上安装驱动固件和SDK服务。
- 修改设备权限,以适配非root用户使用。
安装
前提条件
-
当前计算机上有kubectl和Helm CLI,或集群中有可配置的应用商店或仓库。
-
请确认环境中含有bash工具,否则可能导致驱动固件安装脚本解析失败。
-
Kubernetes集群中运行NPU工作负载的所有工作节点或节点组运行的操作系统版本都需满足openEuler 22.03 LTS或者Ubuntu 22.04(ARM架构)。
对于仅运行CPU工作负载的工作节点或节点组,节点可以运行任何操作系统,因为NPU Operator不会对非NPU工作负载的节点执行任何配置或管理。
当前NPU Operator所安装的组件需要运行环境满足的NPU芯片型号为910B和310P。具体OS和硬件配套关系请参考MindCluster文档。
-
节点特性感知服务(Node-Feature-Discovery)和NPU特性感知服务(NPU-Feature-Discovery)是每个节点上Operator的依赖项。
说明:
默认情况下,NFD主节点和工作节点由Operator自动部署。如果NFD已在集群中运行,则必须在安装Operator时禁用部署NFD。同样的,如果NPU-Feature-Discovery已经提前部署到集群中了,那么也需要在安装Operator时禁用部署NPU-Feature-Discovery。values.yaml
nfd:
enabled: false
npu-feature-discovery:
enabled: false通过检查节点上的NFD标签确定NFD是否已在集群中运行。
kubectl get nodes -o json | jq '.items[].metadata.labels | keys | any(startswith("feature.node.kubernetes.io"))'
如果命令输出为
true
,则NFD已在集群中运行。此时设置nodefeaturerules
,安装NPU自定义节点发现规则。nfd:
nodefeaturerules: true默认情况下,nfd为true状态,npu-feature-discovery为true状态,nodefeaturerules为false状态。
开始安装
openFuyao平台
NPU Operator扩展组件,可在openFuyao应用市场下载安装。
- 进入openFuyao平台,在左侧导航栏中选择“应用市场 > 应用列表”。
- 在应用列表搜索“npu-operator”,找到NPU Operator扩展组件。
- 单击NPU Operator卡片进入应用的详情页。
- 在详情页单击右上角的“部署”,在部署界面的“安装信息”模块中输入“应用名称”,“版本信息”和“命名空间”。
- 单击“确认”,即可成功部署该组件。
通用场景
安装步骤
-
添加openFuyao Helm存储库。
helm repo add openfuyao https://harbor.openfuyao.com/chartrepo/openfuyao-catalog && helm repo update
-
安装NPU Operator。
-
使用默认配置安装Operator:
cd npu-operator/charts
helm install <npu-operator release name> npu-operator
-
若基于Helm应用商店或应用市场安装,则通过添加https://harbor.openfuyao.com/chartrepo/openfuyao-catalog
仓,在界面安装即可。详情请参见常见定制选项。
说明:
- 安装完NPU Operator后,会根据不同节点环境,为节点打上与NPU资源相关的标签,这些标签与集群调度组件相关。其中accelerate-type标签需要节点的硬件服务器与NPU卡完全匹配,具体匹配关系可参考MindCluster文档的创建节点标签。
- 对于Atlas 800I A2推理服务器,暂不支持自动添加server-usage=infer标签,需要用户执行如下命令手动添加。
kubectl label nodes <节点名称> server-usage=infer
常见定制选项
使用Helm Chart时,以下选项可用。这些选项通过--set
在Helm安装时使用。
表2列出了最常用的选项。
范围 | 描述 | 默认 |
---|---|---|
nfd.enabled | 部署节特性感知服务NFD,如果NFD已在集群中运行,则设置此变量为false 。
| true |
nfd.nodefeaturerules | 设置为true 时,安装NFD发现NPU设备规则CR。 | true |
node-feature-discovery.image.repository | NFD服务镜像地址。 | registry.k8s.io/nfd/node-feature-discovery |
node-feature-discovery.image.pullPolicy | NFD服务镜像拉取策略。 | Always |
node-feature-discovery.image.tag | NFD服务镜像版本。 | v0.16.4 |
npu-feature-discovery.image.repository | NPU-Feature-Discovery镜像地址。 | harbor.openfuyao.com/openfuyao/npu-feature-discovery |
npu-feature-discovery.image.pullPolicy | NPU-Feature-Discovery镜像拉取策略。 | latest |
npu-feature-discovery.image.tag | NPU-Feature-Discovery镜像版本。 | Always |
npu-feature-discovery.enabled | 部署NPU-Feature-Discovery的开关,如果NPU-Feature-Discovery已经在集群中运行了,则设置此变量为false。 | true |
operator.image | NPU Operator镜像地址。 | harbor.openfuyao.com/openfuyao/npu-operator |
operator.version | NPU Operator镜像版本。 | latest |
operator.imagePullPolicy | NPU Operator镜像拉取策略。 | IfNotPresent |
daemonSets.labels | 要添加到所有NPU Operator管理Pod的自定义标签。 | {} |
daemonSets.tolerations | 要添加到所有NPU Operator管理Pod的自定义容忍。 | [] |
driver.enabled | 默认情况下,Operator会将NPU驱动固件程序作为容器部署在系统上。 | true |
driver.registry | 驱动固件程序镜像存储库。使用自定义驱动程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
driver.repository | 驱动固件程序镜像地址。 | openfuyao/ascend-image/ascend-operator |
driver.tag | 驱动固件安装服务的镜像版本。 | v6.0.0 |
driver.version | 驱动固件的版本号。 | 24.1.RC3 |
devicePlugin.enabled | 默认情况下,Operator会将NPU设备插件程序部署在系统上。在预装设备插件的系统上使用Operator时,请将此值设置为false 。
| true |
devicePlugin.registry | 设备插件程序镜像存储库。 | harbor.openfuyao.com |
devicePlugin.repository | 设备插件程序镜像地址。 | openfuyao/ascend-image/ascend-k8sdeviceplugin |
devicePlugin.tag | 设备插件服务的镜像版本。 | v6.0.0 |
trainer.enabled | 默认情况下,Operator会安装Ascend operator,若不需要安装请将该值设置为false 。 | true |
trainer.registry | Ascend operator镜像存储库。使用自定义驱动程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
trainer.repository | Ascend operator镜像地址。 | openfuyao/ascend-image/ascend-operator |
trainer.tag | Ascend operator镜像版本。 | v6.0.0 |
ociRuntime.enabled | 默认情况下,Operator会安装Ascend Docker Runtime,若不需要安装请将该值设置为false 。 | true |
ociRuntime.registry | Ascend Docker Runtime安装程序镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
ociRuntime.repository | Ascend Docker Runtime镜像地址。 | openfuyao/npu-container-toolkit |
ociRuntime.tag | Ascend Docker Runtime镜像的版本。 | latest |
nodeD.enabled | 默认情况下,Operator会安装nodeD,若不需要安装请将该值设置为false 。 | true |
ndoeD.registry | nodeD镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
nodeD.repository | nodeD镜像地址。 | openfuyao/ascend-image/nodeD |
nodeD.tag | nodeD镜像的版本。 | v6.0.0 |
clusterd.enabled | 默认情况下,Operator会安装clusterD组件,若不需要安装请将该值设置为false 。 | true |
clusterd.registry | clusterD镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
clusterd.repository | clusterD镜像地址。 | openfuyao/ascend-image/clusterd |
clusterd.tag | clusterD镜像的版本。 | v6.0.0 |
rscontroller.enabled | 默认情况下,Operator会安装resilience controller组件,若不需要安装请将该值设置为false 。 | true |
rscontroller.registry | resilience controller镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
rscontroller.repository | resilience controller镜像地址。 | openfuyao/ascend-image/resilience-controller |
rscontroller.tag | resilience controller镜像的版本。 | v6.0.0 |
exporter.enabled | 默认情况下,Operator会安装NPU Exporter组件,若不需要安装请将该值设置为false 。 | true |
exporter.registry | NPU Exporter镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
exporter.repository | NPU Exporter镜像地址。 | openfuyao/ascend-image/npu-exporter |
exporter.tag | NPU Exporter镜像的版本。 | v6.0.0 |
mindiotft.enabled | 默认情况下,Operator会安装MindIO Training Fault Tolerance,若不需要安装请将该值设置为false 。 | true |
mindiotft.registry | MindIO Training Fault Tolerance镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
mindiotft.repository | MindIO Training Fault Tolerance镜像地址。 | openfuyao/npu-node-provision |
mindiotft.tag | MindIO Training Fault Tolerance镜像的版本。 | latest |
mindioacp.enabled | 默认情况下,Operator会安装MindIO Async Checkpoint Persistence,若不需要安装请将该值设置为false 。 | true |
mindioacp.registry | MindIO Async Checkpoint Persistence镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。 | harbor.openfuyao.com |
mindioacp.repository | MindIO Async Checkpoint Persistence服务镜像地址。 | openfuyao/npu-node-provision |
mindioacp.tag | MindIO Async Checkpoint Persistence服务镜像的版本。 | latest |
mindioacp.version | MindIO Async Checkpoint Persistence的版本。 | 6.0.0 |
升级
NPU Operator支持对现有资源进行动态更新。此功能使NPU Operator能够确保集群中NPU Policy的设置始终保持最新。
由于Helm不支持现有CRD的自动升级,因此可以手动或通过启用Helm Hook来升级NPU Operator Chart。
NPU Policy CR更新
NPU Operator支持使用kubectl
对npuclusterpolicy
CustomResource进行动态更新。
kubectl get npuclusterpolicy -A
# 若未对默认npuclusterpolicy进行修改,npuclusterpolicy的默认名称为cluster。
kubectl edit npuclusterpolicy cluster
编辑完成后,Kubernetes自动将应用更新到集群。各项由NPU Operator管理的组件也会更新到预期状态。
安装状态验证
通过CustomResource查看组件状态
通过CustomResourcenpuclusterpolicies.npu.openfuyao.com
查看组件状态,具体方式是通过查看status
字段中的各个组件的state
字段确认组件的当前状态,如下为driver安装程序正常运行的状态示例。
status:
componentStatuses:
- name: /var/lib/npu-operator/components/driver
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
-
查看CustomResource
$ kubectl get npuclusterpolicies.npu.openfuyao.com cluster -o yaml
apiVersion: npu.openfuyao.com/v1
kind: NPUClusterPolicy
metadata:
annotations:
meta.helm.sh/release-name: npu
meta.helm.sh/release-namespace: default
creationTimestamp: "2025-03-11T13:22:39Z"
generation: 2
labels:
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: npu-operator
name: cluster
resourceVersion: "2240086"
uid: 0d1498c5-143a-4e05-a5dc-376d2e6c96ea
spec:
clusterd:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/ascend-image/clusterd
tag: v6.0.0
logRotate:
compress: false
logFile: /var/log/mindx-dl/clusterd/clusterd.log
logLevel: info
maxAge: 7
rotate: 30
managed: true
daemonsets:
imageSpec:
imagePullPolicy: IfNotPresent
imagePullSecrets: []
labels:
app.kubernetes.io/managed-by: npu-operator
helm.sh/chart: npu-operator-0.0.0-latest
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
operator: Equal
value: ""
- effect: NoSchedule
key: node-role.kubernetes.io/control-plane
operator: Equal
value: ""
devicePlugin:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/ascend-image/ascend-k8sdeviceplugin
tag: v6.0.0
logRotate:
compress: false
logFile: /var/log/mindx-dl/devicePlugin/devicePlugin.log
logLevel: info
maxAge: 7
rotate: 30
managed: true
driver:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/npu-driver-installer
tag: latest
logRotate:
compress: false
logFile: /var/log/mindx-dl/driver/driver.log
logLevel: info
maxAge: 7
rotate: 30
managed: true
version: 24.1.RC3
exporter:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/ascend-image/npu-exporter
tag: v6.0.0
logRotate:
compress: false
logFile: /var/log/mindx-dl/npu-exporter/npu-exporter.log
logLevel: info
maxAge: 7
rotate: 30
managed: true
mindioacp:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/npu-node-provision
tag: latest
managed: false
version: 6.0.0
mindiotft:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/npu-node-provision
tag: latest
managed: false
nodeD:
heartbeatInterval: 5
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/ascend-image/noded
tag: v6.0.0
logRotate:
compress: false
logFile: /var/log/mindx-dl/noded/noded.log
logLevel: info
maxAge: 7
rotate: 30
managed: true
pollInterval: 60
ociRuntime:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/npu-container-toolkit
tag: latest
interval: 300
managed: true
operator:
imageSpec:
imagePullPolicy: IfNotPresent
imagePullSecrets: []
runtimeClass: ascend
rscontroller:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/ascend-image/resilience-controller
tag: v6.0.0
logRotate:
compress: false
logFile: /var/log/mindx-dl/resilience-controller/run.log
logLevel: info
maxAge: 7
rotate: 30
managed: true
trainer:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/ascend-image/ascend-operator
tag: v6.0.0
logRotate:
compress: false
logFile: /var/log/mindx-dl/ascend-operator/ascend-operator.log
logLevel: info
maxAge: 7
rotate: 30
managed: true
vccontroller:
controllerResources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 1000m
memory: 1Gi
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/ascend-image/vc-controller-manager
tag: v1.9.0-v6.0.0
managed: true
vcscheduler:
imageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: harbor.openfuyao.com
repository: openfuyao/ascend-image/vc-scheduler
tag: v1.9.0-v6.0.0
managed: true
schedulerResources:
limits:
cpu: 200m
memory: 1Gi
requests:
cpu: 200m
memory: 1Gi
status:
componentStatuses:
- name: /var/lib/npu-operator/components/driver
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/oci-runtime
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/device-plugin
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/trainer
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/noded
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/volcano/volcano-controller
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/volcano/volcano-scheduler
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/clusterd
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/resilience-controller
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/npu-exporter
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
- name: /var/lib/npu-operator/components/mindio/mindiotft
prevState:
reason: Reconciling
type: deploying
state:
reason: ComponentUnmanaged
type: unmanaged
- name: /var/lib/npu-operator/components/mindio/mindioacp
prevState:
reason: Reconciling
type: deploying
state:
reason: ComponentUnmanaged
type: unmanaged
conditions:
- lastTransitionTime: "2025-03-11T13:25:41Z"
message: ""
reason: Ready
status: "False"
type: Error
- lastTransitionTime: "2025-03-11T13:25:41Z"
message: all components have been successfully reconciled
reason: Reconciled
status: "True"
type: Ready
namespace: default
phase: Ready
手动确认各组件安装的状态和运行结果
- 驱动安装状态确认
检测驱动固件安装情况,请使用如npu-smi info
命令,若回显类似如下说明已经安装驱动。
+------------------------------------------------------------------------------------------------+
| npu-smi 24.1.rc2 Version: 24.1.rc2 |
+---------------------------+---------------+----------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)|
| Chip | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) |
+===========================+===============+====================================================+
| 0 910B3 | OK | 99.1 55 0 / 0 |
| 0 | 0000:C1:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 1 910B3 | OK | 91.7 53 0 / 0 |
| 0 | 0000:C2:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 2 910B3 | OK | 98.2 51 0 / 0 |
| 0 | 0000:81:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 3 910B3 | OK | 93.2 49 0 / 0 |
| 0 | 0000:82:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 4 910B3 | OK | 98.8 55 0 / 0 |
| 0 | 0000:01:00.0 | 0 0 / 0 3163 / 65536 |
+===========================+===============+====================================================+
| 5 910B3 | OK | 96.2 56 0 / 0 |
| 0 | 0000:02:00.0 | 0 0 / 0 3163 / 65536 |
+===========================+===============+====================================================+
| 6 910B3 | OK | 96.9 53 0 / 0 |
| 0 | 0000:41:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 7 910B3 | OK | 97.6 55 0 / 0 |
| 0 | 0000:42:00.0 | 0 0 / 0 3163 / 65536 |
+===========================+===============+====================================================+
+---------------------------+---------------+----------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===========================+===============+====================================================+
| No running processes found in NPU 0 |
+===========================+===============+====================================================+
| No running processes found in NPU 1 |
+===========================+===============+====================================================+
| No running processes found in NPU 2 |
+===========================+===============+====================================================+
| No running processes found in NPU 3 |
+===========================+===============+====================================================+
| No running processes found in NPU 4 |
+===========================+===============+====================================================+
| No running processes found in NPU 5 |
+===========================+===============+====================================================+
| No running processes found in NPU 6 |
+===========================+===============+====================================================+
| No running processes found in NPU 7 |
+===========================+===============+====================================================+
-
MindCluster组件安装状态确认
使用
kubectl get pod -A
查看所有Pod,若均为运行状态,说明组件启动成功。更加详细的每个组件功能状态验证,请参考MindCluster官方文档。
NAMESPACE NAME READY STATUS RESTARTS AGE
default ascend-runtime-containerd-7lg85 1/1 Running 0 6m31s
default npu-driver-c4744 1/1 Running 0 6m31s
default npu-operator-77f56c9f6c-fhx8m 1/1 Running 0 6m32s
default npu-feature-discovery-zqgt9 1/1 Running 0 7m12s
default mindio-acp-43f64g63d2v 1/1 Running 0 7m21s
default mindio-tft-2cc35gs3c2u 1/1 Running 0 6m32s
kube-system ascend-device-plugin-fm4h9 1/1 Running 0 6m35s
mindx-dl ascend-operator-manager-6ff7468bd9-47d7s 1/1 Running 0 6m50s
mindx-dl clusterd-5ffb8f6787-n5m82 1/1 Running 0 6m48s
mindx-dl noded-kmv8d 1/1 Running 0 7m11s
mindx-dl resilience-controller-6727f36c28-wjn3s 1/1 Running 0 7m20s
npu-exporter npu-exporter-b6txl 1/1 Running 0 7m22s
volcano-system volcano-controllers-373749bg23c-mc9cq 1/1 Running 0 7m31s
volcano-system volcano-scheduler-d585db88f-nkxch 1/1 Running 0 7m40s
卸载
执行以下步骤来卸载Operator。
-
执行如下命令,通过Helm CLI或应用管理界面删除Operator。
helm delete <npu-operator release name>
默认情况下,Helm不支持在删除Chart时删除现有的CRD。
kubectl get crd npuclusterpolicies.npu.openfuyao.com
-
执行如下命令,也可以手动删除CRD。
kubectl delete crd npuclusterpolicies.npu.openfuyao.com
说明:
Operator卸载后驱动程序可能还存在于宿主机上。
组件安装卸载说明
各组件安装卸载字段
-
在第一次安装NPU Operator时,若values.yaml中的对应组件的enabled字段设置为
true
,则无论集群中是否曾有该组件资源,都将替换为由NPU Operator所管理的组件资源。 -
若本身集群环境中已有该组件(例如volcano-controller),且在第一次安装NPU Operator时,该组件的
enabled
字段在values.yaml中设置为false
,不会删除集群中已有的组件资源。 -
当NPU Operator安装完成后,修改CR实例对应字段,可完成组件的镜像地址、资源配置、生命周期管理等操作。
MindIO安装依赖
-
若用户需要安装MindIO相关组件时,需要在节点环境中提前安装好python环境(需含pip3工具),支持的python版本为3.7-3.11,否则无法正常安装。用户使用时,可将安装好的对应SDK挂载到训练容器中进行使用。
-
MindIO TFT(Training Fault Tolerance)组件的安装路径为/opt/sdk/tft,并且我们在/opt/tft-whl-package中为用户提供了不同python版本使用的whl包,以满足用户定制化的需求,具体使用请参考MindCluster文档中的参考章节“故障恢复加速”。
-
MindIO ACP(Async Checkpoint Persistence)组件的安装路径为/opt/mindio和/opt/sdk/acp,并且我们在/opt/acp-whl-package中为用户提供了不同python版本使用的whl包供用户自行根据需要安装。具体使用说明请参考MindCluster文档中的参考章节“checkpoint保存与加载优化”。
-
卸载MindIO组件时,有关MindIO组件的SDK文件夹等将被清除,可能导致使用服务的任务容器异常,请谨慎操作。